/*
 * 观察者模式
 * - 发送消息的并不知道接收者是谁
 * - 发消息的并知道是否有人接收
 */

 const EventEmitter = require('events').EventEmitter;

 class GeekTime extends EventEmitter {
     constructor() {
        super()
        // 构造器，定义一个计时器，3 秒进行一个事件发送
        setInterval(() => {
            this.emit('newlesson', {price: Math.random() * 50})
        }, 3000);
     }
 }

 // 创建实例，有构造函数则不需要添加 ()
 const geektime = new GeekTime;

// 监听事件，并接受回调
geektime.addListener('newlesson', (res) => {
    console.log(res.price)
})
